/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.conasinf.sofia.controller;

import com.conasinf.sofia.model.dao.Impl.TiposDocumentoDAOImpl;
import com.conasinf.sofia.model.dao.TiposDocumentoDAO;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import com.conasinf.sofia.model.TTiposDocumento;

/**
 *
 * @author jfgomez
 */
@ManagedBean
@SessionScoped
public class TiposDocumentoBean implements Serializable {

    //Variable lista que es una lista de tipo TTiposDocumento segun el modelo
    //Variable objSelect que es un objeto del tipo TTiposDocumento que recibira el objeto seleccionado en la vista
    private List<TTiposDocumento> lista;
    private List<SelectItem> objListSelect;
    private TTiposDocumento objSeleccionado = new TTiposDocumento();

    //Inicializa la lista al instanciar la clase    
    public TiposDocumentoBean() {
        this.lista = new ArrayList<TTiposDocumento>();
        this.objSeleccionado = new TTiposDocumento();
    }

    /**
     * insert() * inserta un nuevo registro en la base de datos crea un nuevo
     * objeto de tipo DAOImpl asigna id en cero para no enviar nulos a la base
     * de datos asigna el usuario que esta trabajando en sesion
     *
     * @author jfgomez
     * @param actionEvent
     */
    public void insert(ActionEvent actionEvent) {
        TiposDocumentoDAO consulta = new TiposDocumentoDAOImpl();
        this.objSeleccionado.setId(0);
        this.objSeleccionado.setTipoDocumento(this.objSeleccionado.getTipoDocumento().toUpperCase());
        this.objSeleccionado.setUsuario("jfgomez");
        consulta.save(this.objSeleccionado);
    }

    /**
     * update() * actualiza el registtro seleccionado en la base de datos crea
     * un nuevo objeto de tipo DAOImpl asigna el usuario que esta trabajando en
     * sesion
     *
     * @author jfgomez
     */
    public void update(ActionEvent actionEvent) {
        TiposDocumentoDAO consulta = new TiposDocumentoDAOImpl();
        this.objSeleccionado.setTipoDocumento(this.objSeleccionado.getTipoDocumento().toUpperCase());
        this.objSeleccionado.setUsuario("jfgomez");
        consulta.update(this.objSeleccionado);
    }

    /**
     * getLista() * entrega una lista de objetos segun la consulta enviada Crea
     * un nuevo objeto de tipo DAOImpl
     *
     * @author jfgomez
     */
    public List<TTiposDocumento> getLista() {
        TiposDocumentoDAO consulta = new TiposDocumentoDAOImpl();
        return consulta.findAll("from TTiposDocumento Order By tipoDocumento");
    }

    public void setLista(List<TTiposDocumento> lista) {
        this.lista = lista;
    }

    public List<SelectItem> getObjListSelect() {
        this.objListSelect = new ArrayList<SelectItem>();
        TiposDocumentoDAO consulta = new TiposDocumentoDAOImpl();
        List<TTiposDocumento> tds = consulta.findAll("from TTiposDocumento Order By tipoDocumento");
        for (TTiposDocumento td : tds){
            SelectItem selectItem = new SelectItem(td.getId(), td.getTipoDocumento());
            this.objListSelect.add(selectItem);
        }
        return objListSelect;
    }

    public void setObjListSelect(List<SelectItem> objListSelect) {
        this.objListSelect = objListSelect;
    }

    public TTiposDocumento getObjSeleccionado() {
        return objSeleccionado;
    }

    public void setObjSeleccionado(TTiposDocumento objSeleccionado) {
        this.objSeleccionado = objSeleccionado;
    }

}
